//1.写功能 2.写空函数 3.把1放入2中 4.微调·
//固定逻辑不用函数，非固定逻辑写函数

/**
 * 发送get异步请求
 * @param {String} url 
 * @param {Object} params 
 * @param {function} callback 
 * @param {String|undefined} type 
 * @param {Object} headers 
 * @return undefined
 */
function get(url,params,callback,type,headers={}){
    const xhr=new XMLHttpRequest()
    xhr.onreadystatechange=()=>{
        if(xhr.readyState===4){
            if(xhr.status===200){
                let res=xhr.responseText
                if(type==='json') res=JSON.parse(xhr.responseText)
                //逻辑处理
                callback(res)
            }else{
                console.log('失败',xhr.status)
            }
        }
    }
    let temp=[]
    for(key in params){
        temp.push(`${key}=${params[key]}`)
    }
    xhr.open('get',`${url}?${temp.join('&')}`)
    for(let key in headers){
        xhr.setRequestHeader(key,headers[key])
    }
    xhr.send(null)
}


/**
 * 发送post异步请求
 * @param {String} url 
 * @param {Object} params 
 * @param {function} callback 
 * @param {String|undefined} type 
 * @param {Object} headers 
 * @return undefined
 */
function post(url,params,callback,type,headers={}){
    const xhr=new XMLHttpRequest()
    xhr.onreadystatechange=()=>{
        if(xhr.readyState===4){
            if(xhr.status===200){
                let res=xhr.responseText
                if(type==='json') res=JSON.parse(xhr.responseText)
                //逻辑处理
                callback(res)
            }else{
                console.log('失败',xhr.status)
            }
        }
    }
    xhr.open('post',`${url}`)
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
    for(let key in headers){
        xhr.setRequestHeader(key,headers[key])
    }
    let temp=[]
    for(let key in params){
        temp.push(`${key}=${params[key]}`)
    }
    xhr.send(temp.join('&'))
}
